#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int x=0;bool f=0;char ch=getchar();
	while(ch<'0'||ch>'9')f^=(ch=='-'),ch=getchar();
	while('0'<=ch&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return f?-x:x;
}
const int Maxn=8e5+5;
int head[Maxn],to[Maxn<<1],nxt[Maxn<<1],w[Maxn<<1],cnt1;
inline void add(int u,int v,int w1){
	to[++cnt1]=v;nxt[cnt1]=head[u];
	w[cnt1]=w1;head[u]=cnt1;
}
int n,a[Maxn];
struct edge{int u,v,w;}e[Maxn];
int f[Maxn],dep[Maxn];
void dfs(int u,int v){
	f[u]=v;dep[u]=dep[v]+1;
	for(int i=head[u];i;i=nxt[i]){
		int y=to[i];
		if(y==v)continue;
		a[y]=w[i];
		dfs(y,u);
	}
}
signed main(){
	freopen("tatooine.in","r",stdin);
	freopen("tatooine1.out","w",stdout);
	n=read();
	for(int i=1;i<n;i++){
		int u=read(),v=read(),w=read();
		add(u,v,w);add(v,u,w);
		e[i]={u,v,w};
	}dfs(1,0);
	for(int k=1;k<n;k++){
		int ans=0;
		if(f[e[k].u]!=e[k].v)swap(e[k].u,e[k].v);
		a[e[k].u]=0;
		for(int u=1;u<=n;u++)
			for(int v=u+1;v<=n;v++){
				int mn=30;
				int i=u,j=v;
				if(dep[i]<dep[j])swap(i,j);
				while(dep[i]>dep[j])mn=min(mn,a[i]),i=f[i];
				while(i!=j)mn=min(mn,a[i]),mn=min(mn,a[j]),i=f[i],j=f[j];
				ans+=mn;
			}
		printf("%lld\n",ans);
		a[e[k].u]=e[k].w;
	}
	return 0;
}

